"""
@name : 练习
@author : maxueyan
@projectname: sanchuang
"""

#查找一个文件中最长的行，输出长度
# import string
# import random
#
# with open('big.data',"w+",encoding="utf-8") as f:
#     f.write('aaaaaaaaaaaaaaaaa\n'*10**7)
#     f.write(("".join(random.choices(string.ascii_lowercase,k=random.randint(1,50)))+"\n").encode("utf-8"))
# with open('big.data',"r+",encoding="utf-8") as fp:
#     g1 = (len(max(x)) for x in fp)
#     print(next(g1))


###########如何判断一个对象是可迭代对象，迭代器对象或生成器
#可以使用for循环遍历出所有元素的都可以称为可迭代对象 实现了__iter__()方法并返回了一个迭代器的 列表、元组、字符串、字典等都是可迭代对象
#迭代器对象：对象内部同时实现了__iter__（）和__next__（）方法，执行__next__（）方法返回迭代器中的下一项，最后一个元素返回后再调用raise一个StopIteration异常，结束迭代
#生成器：不需要手动编写__iter__()和__next__()方法，只需要yield关键字

##########迭代器与生成器的区别
#生成器就是特殊的迭代器，为了写迭代器更加的优雅

##########可迭代对象与迭代器的区别
# 迭代器一定是一个可迭代对象  但是可迭代对象不一定是迭代器

##########如何定义一个生成器
# 不需要手动编写__iter__()和__next__()方法，只需要yield关键字

##########如何获取可迭代对象、迭代器与生成器中的数据
# 可迭代对象：for循环
# 迭代器：__iter__()、__next__()
# 生成器：__next__()

##########1、输入两个日期，计算两个日期之间相差的天数（time或者datetime模块）
# import time
#
# d1 = input("请输入第一个日期(格式为：%Y-%m-%d)：")
# d2 = input("请输入第二个日期(格式为：%Y-%m-%d)：")
# def test(d1,d2):
#     time1 = time.strptime(d1,"%Y-%m-%d")
#     timestamp_d1 = int(time.mktime(time1))
#     time2 = time.strptime(d2,"%Y-%m-%d")
#     timestamp_d2 = int(time.mktime(time2))
#     result = (timestamp_d2 - timestamp_d1) // 60 //60 // 24
#     return result
#
# different_d = test(d1,d2)
# print("两个日期间隔的天数：{}".format(different_d))


##########2、输入一个数字n，计算n天之前是什么日期，输出日期形式为“2021-07-27”
# import datetime

# days = int(input("你要计算几天前的日期："))
# print((datetime.datetime.now() - datetime.timedelta(days = n)).strftime("%Y-%m-%d"))

##########3、统计当前文件夹的大小（python实现，预备知识：os模块）
# import os
#
# def statistics_file(path):
#     a = 0
#     lst1 = os.listdir(path)  #展开目录下的信息
#     for i in lst1:           #遍历目录下的信息
#         if os.path.isdir(os.path.join(path,i)):     #判断是否为目录
#             a = a + statistics_file(os.path.join(path,i))   #调用递归求得目录大小
#         else:
#             a = a + os.path.getsize(os.path.join(path,i))    #若不是目录加上该文件得大小
#     return a    #返回目录总大小
#
# print(statistics_file('F:/sanchuang'))



